package com.iraeta.common;

import cn.hutool.cache.CacheUtil;
import cn.hutool.cache.impl.FIFOCache;
import com.iraeta.dao.main.MyconfigDao;
import com.iraeta.entity.main.Myconfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ConfigCache {
    @Autowired
    MyconfigDao myconfigDao;

    private final FIFOCache<String, String> configCache = CacheUtil.newFIFOCache(100);

    public synchronized String get(String itemKey) {
       String itemValue = configCache.get(itemKey);
       if(itemValue == null){
           Myconfig myconfig = myconfigDao.selectByKey(itemKey);
           if(myconfig != null){
               configCache.put(itemKey, myconfig.getItemvalue());
               return myconfig.getItemvalue();
           }
           return null;
       }else {
           return itemValue;
       }
    }

    public synchronized void put(String itemKey, String itemValue) {
        Myconfig myconfig = myconfigDao.selectByKey(itemKey);
        if(myconfig != null){
            myconfig.setItemvalue(itemValue);
            myconfigDao.updateByPrimaryKey(myconfig);
        }else{
            myconfig = new Myconfig(itemKey, itemValue);
            myconfigDao.insert(myconfig);
        }
        configCache.put(itemKey, itemValue);
    }
    public synchronized void remove(String key){
        configCache.remove(key);
    }
}
